/*
 * Copyright (c) 2007-2020 西安交通信息投资营运有限公司 版权所有
 */

package com.xci.edu.core.dao;

import com.github.lvyanyang.annotation.Paging;
import com.xci.edu.core.entity.EduQuestionFavorite;
import com.xci.edu.core.filter.EduQuestionFavoriteFilter;
import com.xci.edu.core.entity.EduQuestionFavorite;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 题库收藏数据层
 * @author 马星俊 maxingjun@xci96716.com
 * @since 2020-12-24 14:51:30
 */
public interface EduQuestionFavoriteDao {
    /**
     * 新建题库收藏
     * @param entity 题库收藏实体
     * @return 返回影响的行数
     */
    int insert(@Param("entity") EduQuestionFavorite entity);

    /**
     * 修改题库收藏
     * @param entity 题库收藏实体
     * @return 返回影响的行数
     */
    int update(@Param("entity") EduQuestionFavorite entity);

    /**
     * 根据主键修改题库收藏状态
     * @param id     题库收藏主键
     * @param status 题库收藏状态
     * @return 返回影响的行数
     */
    int updateStatus(@Param("id") Long id, @Param("status") Boolean status);

    /**
     * 根据主键删除题库收藏
     * @param id 题库收藏主键
     * @return 返回影响的行数
     */
    int deleteById(@Param("id") Long id );

    /**
     * 根据主键删除题库收藏
     * @param studentId 学员Id
     * @param questionId  题库Id
     * @param favoriteType 收藏类型
     * @return 影响的行数
     */
    int deleteByIdCondition(@Param("studentId") Long studentId,
                            @Param("questionId")Long questionId,
                            @Param("favoriteType")int favoriteType);

    /**
     * 根据主键查询单个题库收藏
     * @param id 题库收藏主键
     * @return 返回题库收藏实体
     */
    EduQuestionFavorite selectById(@Param("id") Long id);

    /**
     * 根据条件查询单个试题是否收藏
     * @param studentId 学员Id
     * @param questionId  题库Id
     * @param favoriteType 收藏类型
     * @return 影响的行数
     */
    boolean selectByIdCondition(@Param("studentId") Long studentId,
                            @Param("questionId")Long questionId,
                            @Param("favoriteType")int favoriteType);

    ///**
    // * 根据编码查询单个题库收藏
    // * @param code 题库收藏编码
    // * @return 返回题库收藏实体
    // */
    //EduQuestionFavorite selectByCode(@Param("code") String code);

    /**
     * 查询题库收藏列表
     * @param filter 过滤条件
     * @return 返回题库收藏列表
     */
    List<EduQuestionFavorite> selectList(@Param("filter") EduQuestionFavoriteFilter filter);

    /**
     * 查询题库收藏分页列表
     * @param filter 过滤条件
     * @return 返回题库收藏分页列表
     */
    /*
        allowSortNames = {"id","edu_student_id","edu_question_id","favorite_type","create_date_time"},
        sortNameMaps = {"id:id","edu_student_id:edu_student_id","edu_question_id:edu_question_id","favorite_type:favorite_type","create_date_time:create_date_time"}
    */
    @Paging
    List<EduQuestionFavorite> selectPageList(@Param("filter") EduQuestionFavoriteFilter filter);
}